message(STATUS "WRITING BUILD FILES FOR ThirdParty projects")
#message(STATUS "${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}")

# https://cmake.org/cmake/help/v2.8.8/cmake.html#module%3AExternalProject
# http://www.kitware.com/media/html/BuildingExternalProjectsWithCMake2.8.html
include(ExternalProject)

if (BUILD_EXTERNAL_PROJECTS)
  # Include cmake files that manage the external projects
  include("EPGlib.cmake")
  include("EPlcm.cmake")
else (BUILD_EXTERNAL_PROJECTS)
  message(STATUS "SKIPPING EXTERNAL PROJECTS (RE)BUILD (variable BUILD_EXTERNAL_PROJECTS=${BUILD_EXTERNAL_PROJECTS})")
  if (CYGWIN)
    if ( CMAKE_SIZEOF_VOID_P EQUAL 8 )
      message(STATUS "SETTING lcm library to ${PROJECT_SOURCE_DIR}/Library/win64/liblcm.a")
      set(fLcm ${PROJECT_SOURCE_DIR}/Library/win64/liblcm.a)
    elseif ( CMAKE_SIZEOF_VOID_P EQUAL 4 )
      message(STATUS "SETTING lcm library to ${PROJECT_SOURCE_DIR}/Library/win32/liblcm.a")
      set(fLcm ${PROJECT_SOURCE_DIR}/Library/win32/liblcm.a)
    else ( CMAKE_SIZEOF_VOID_P EQUAL 8 )
      message(SEND_ERROR "Uups. Shouldn't be possible to get here")
    endif ( CMAKE_SIZEOF_VOID_P EQUAL 8 )
    add_library(libLcm STATIC IMPORTED GLOBAL)
    set_property(TARGET libLcm PROPERTY IMPORTED_LOCATION ${fLcm} )
  elseif (UNIX)
    if ( CMAKE_SIZEOF_VOID_P EQUAL 8 )
      message(STATUS "SETTING lcm library to ${PROJECT_SOURCE_DIR}/Library/linux64/liblcm.a")
      set(fLcm ${PROJECT_SOURCE_DIR}/Library/linux64/liblcm.a)
      message(STATUS "SETTING glib library to ${PROJECT_SOURCE_DIR}/Library/linux64/libglib-2.0.a")
      set(fGlibGlib20 ${PROJECT_SOURCE_DIR}/Library/linux64/libglib-2.0.a)
    elseif ( CMAKE_SIZEOF_VOID_P EQUAL 4 )
      message(STATUS "SETTING lcm library to ${PROJECT_SOURCE_DIR}/Library/linux32/liblcm.a")
      set(fLcm ${PROJECT_SOURCE_DIR}/Library/linux32/liblcm.a)
      message(STATUS "SETTING glib library to ${PROJECT_SOURCE_DIR}/Library/linux32/libglib-2.0.a")
      set(fGlibGlib20 ${PROJECT_SOURCE_DIR}/Library/linux32/libglib-2.0.a)
    else ( CMAKE_SIZEOF_VOID_P EQUAL 8 )
      message(SEND_ERROR "Uups. Shouldn't be possible to get here")
    endif ( CMAKE_SIZEOF_VOID_P EQUAL 8 )
    add_library(libLcm STATIC IMPORTED GLOBAL)
    set_property(TARGET libLcm PROPERTY IMPORTED_LOCATION ${fLcm} )

    add_library(libGlibGlib20 STATIC IMPORTED GLOBAL)
    set_property(TARGET libGlibGlib20 PROPERTY IMPORTED_LOCATION ${fGlibGlib20} )

  elseif (MSVC OR MINGW)
    if ( CMAKE_SIZEOF_VOID_P EQUAL 8 )
      message(STATUS "SETTING lcm library to ${PROJECT_SOURCE_DIR}/Library/win64/lcm.dll")
      set(fLcm ${PROJECT_SOURCE_DIR}/Library/win64/lcm.dll)
      set(fLcmIMP ${PROJECT_SOURCE_DIR}/Library/win64/lcm.lib)
      message(STATUS "SETTING glib library to ${PROJECT_SOURCE_DIR}/Library/win64/glib-2.0.dll")
      set(fGlibGlib20 ${PROJECT_SOURCE_DIR}/Library/win64/glib-2.0.dll)
      set(fGlibGlib20IMP ${PROJECT_SOURCE_DIR}/Library/win64/glib-2.0.lib)
    elseif ( CMAKE_SIZEOF_VOID_P EQUAL 4 )
      message(STATUS "SETTING lcm library to ${PROJECT_SOURCE_DIR}/Library/win32/lcm.dll")
      set(fLcm ${PROJECT_SOURCE_DIR}/Library/win32/lcm.dll)
      set(fLcmIMP ${PROJECT_SOURCE_DIR}/Library/win32/lcm.lib)
      message(STATUS "SETTING glib library to ${PROJECT_SOURCE_DIR}/Library/win32/glib-2.0.dll")
      set(fGlibGlib20 ${PROJECT_SOURCE_DIR}/Library/win32/glib-2.0.dll)
      set(fGlibGlib20IMP ${PROJECT_SOURCE_DIR}/Library/win32/glib-2.0.lib)
    else ( CMAKE_SIZEOF_VOID_P EQUAL 8 )
      message(SEND_ERROR "Uups. Shouldn't be possible to get here")
    endif ( CMAKE_SIZEOF_VOID_P EQUAL 8 )
    add_library(libLcm SHARED IMPORTED GLOBAL)
    set_property(TARGET libLcm PROPERTY IMPORTED_LOCATION ${fLcm})
    set_property(TARGET libLcm PROPERTY IMPORTED_IMPLIB ${fLcmIMP})

    add_library(libGlibGlib20 SHARED IMPORTED GLOBAL)
    set_property(TARGET libGlibGlib20 PROPERTY IMPORTED_LOCATION ${fGlibGlib20})
    set_property(TARGET libGlibGlib20 PROPERTY IMPORTED_IMPLIB ${fGlibGlib20IMP})

  else ()
    message(SEND_ERROR "Uups. Not UNIX, not MSVC")
  endif ()


endif (BUILD_EXTERNAL_PROJECTS)
